-
Notifications
You must be signed in to change notification settings - Fork 8
Reimplement REST interface using HTTP/2 #371
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
8c9e077
to
ea54134
Compare
ea54134
to
7c0e266
Compare
7c0e266
to
67440f0
Compare
6f52331
to
3f65f76
Compare
3f65f76
to
2124412
Compare
Implements HTTP/3 support in the server, following the implementation in ngtcp2's server.cc example. A lot of the function logic and structure from there has been preserved for easier debugging and comparing to the example if needed. Signed-off-by: Frank Osterfeld <[email protected]>
Use CRTP to prepare for a Http3ClientSession (not implemented yet). Signed-off-by: Frank Osterfeld <[email protected]>
2124412
to
f5faf94
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #371 +/- ##
==========================================
- Coverage 56.84% 48.29% -8.55%
==========================================
Files 72 78 +6
Lines 7561 9793 +2232
Branches 2838 3693 +855
==========================================
+ Hits 4298 4730 +432
- Misses 1335 2848 +1513
- Partials 1928 2215 +287 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Implements a new REST interface using HTTP/2, for lower latency and multiplexing of multiple requests on a single connection.
Instead of multithreading + blocking I/O, where each (long-poll) client occupies a thread, using event-driven non-blocking I/O, and poll() the HTTP-related sockets (server socket and client connections) together with the ZMQ sockets. For that, integrate the server more closely with the Broker.
The HTTP/3 implementation has been tested manually using Chrome and curl (see README) but is not covered by unit tests yet, as the native HTTP/3 client implementation would be considerable effort (and probably some more kloc's of code...). As agreed upon with @RalphSteinhagen , the native client might be done later possibly with other libraries like libcurl/CPR that require less code than ngtcp2, given that the client side is not the performance-critical part.